package com.zzs.server.service;

import com.zzs.common.core.response.PageResult;
import com.zzs.server.pojo.bo.problem.SaveProblemBO;
import com.zzs.server.pojo.bo.problem.UpdateProblemBO;
import com.zzs.server.pojo.query.ProblemQuery;
import com.zzs.server.pojo.vo.ProblemDetailVO;
import com.zzs.server.pojo.vo.ProblemVO;

/**
 * 题目业务逻辑接口
 * 负责题目的新增、更新和查询
 * @author zzs
 * @date 2025/03/17
 */
public interface ProblemService {
    /**
     * 保存题目信息
     *
     * @param saveProblemBO 题目业务对象，包含题目的标题、内容、难度等信息
     * @return long 返回保存后的题目ID
     */
    long saveProblem(SaveProblemBO saveProblemBO);

    /**
     * 更新题目信息
     *
     * @param updateProblemBO 题目业务对象，包含要更新的题目信息
     */
    void updateProblem(UpdateProblemBO updateProblemBO);

    /**
     * 获取指定ID的题目详情
     *
     * @param problemId 题目ID
     * @return ProblemDetailVO 题目详情视图对象
     */
    ProblemDetailVO getProblem(long problemId);

    void removeProblem(long problemId);

    PageResult<ProblemVO> listProblems(ProblemQuery problemQuery);

    void publishProblem(long problemId);

    void cancelProblem(long problemId);

    void checkExistsAndPublish(long problemId);
}
